package com.gtw.strategy;

/**
 * 定义每个算法策略必须有的方法和属性
 * 优点:
 *      1.算法可以自由切换
 *      2.扩展性好,增加新的策略非常方便
 * 缺点:
 *      1.策略类过多
 *      2.所有具体策略都需要对外暴露,违反迪米特法则(可以用工厂方法、享元模式、代理模式修正)
 * 使用场景:
 *      1.多个类只在算法行为上稍有不同的地方
 *      2.算法需要自由切换的场景
 *      3.屏蔽算法规则的场景:只需要知道名字,传递相关数字就可以获得结论
 *
 */
public interface Strategy {
    //策略具有的方法
    public void doSomething();
}
